import Vue from 'vue'
import App from './App.vue'
import router from './router'
//引入element-ui
import './plugins/element.js'
//引入全局样式 解决scoped下设置body样式不生效的问题
import '../src/assets/css/global.css'
//引入axios
import axios from 'axios'
//引入状态管理
import store from './vuex/store.js'
Vue.prototype.$http = axios
Vue.config.productionTip = false

//过滤器
import * as custom from './utils/util'

Object.keys(custom).forEach(key => {
  Vue.filter(key, custom[key])
})

// 路由拦截器
router.beforeEach((to, from, next) => {
  if (to.matched.length != 0) {
    if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
      if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在
        next();
      } else {
        next({
          path: '/login',
          query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
        })
      }
    } else {
      if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录
        if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面
          next();
        } else {
          /**
           * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页 
           */
          next({
            path: '/goods/Goods'
          })
        }
      } else {
        next();
      }
    }
  } else {
    next({
      path: '/login',
      query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
    })
  }
})

new Vue({
  router,
  store,
  render: h => h(App),
  components: { App },
  template: '<App/>',
  data: {
    // 空的实例放到根组件下，所有的子组件都能调用
    Bus: new Vue()
  }
}).$mount('#app')
